package util

import (
	"fmt"
	"image"
	"image/draw"
	"image/jpeg"
	"imageTools/tmx"
	"os"
	"strconv"
)

func Tmx2Image(tmxMap *tmx.TmxMap)  {
	newImg := image.NewNRGBA(image.Rect(0, 0, tmxMap.Width*tmxMap.Tilewidth, tmxMap.Height*tmxMap.Tileheight)) //创建一个新RGBA图像
	for index,layer := range tmxMap.Layer {
		for row :=0;row< tmxMap.Height ;row++{
			for  clum :=0;clum<tmxMap.Width;clum++ {
				index:=row*tmxMap.Width+clum
				s := layer.ImageIndex[index]
				v,_ :=strconv.Atoi(s)
				ti := tmxMap.GetImageForIndex(v)
				if ti!=nil{
					file1, _ := os.Open(ti.Source)
					img1, _, _ := image.Decode(file1);
					x := clum*tmxMap.Tilewidth;
					y := (row+1)*tmxMap.Tileheight;
					fmt.Println(ti.Width,ti.Heigth,tmxMap.Tilewidth,tmxMap.Tileheight,x,y,row,clum)
					draw.Draw(newImg,image.Rect(x,y-ti.Heigth,x+ti.Width,y),img1,image.Pt(0,0),draw.Over);
					//fmt.Println(ti.Source,x,y);
					file1.Close()
				}
			}

		}
		fmt.Println(index,"====================处理完毕")
	}
	imgfile, _ := os.Create("D:/333/003_temp.jpg")
	defer imgfile.Close()
	err :=jpeg.Encode(imgfile, newImg, &jpeg.Options{100})
	if err!=nil {
		fmt.Println("我出错了",err)
	}
	fmt.Println("处理完毕")
}

func TestAddImage()  {

	//file1, _ := os.Open("D:/333/temp_0/0_51.jpg") //打开图片1
	//file2, _ := os.Open("D:/333/temp_0/0_52.jpg") //打开图片2
	//defer file1.Close()
	//defer file2.Close()
	//
	//// image.Decode 图片
	//var (
	//	img1, img2 image.Image
	//	err        error
	//)
	//if img1, _, err = image.Decode(file1); err != nil {
	//	log.Fatal(err)
	//	return
	//}
	//if img2, _, err = image.Decode(file2); err != nil {
	//	log.Fatal(err)
	//	return
	//}

	var rcout=36
	var ccout=132

	newImg := image.NewNRGBA(image.Rect(0, 0, ccout*256, rcout*256)) //创建一个新RGBA图像


	for row:=0;row<rcout;row++{
		for cloum:=0;cloum<ccout;cloum++{
			path := fmt.Sprintf("D:/333/temp_0/%d_%d.jpg", row, cloum)
			file1, _ := os.Open(path) //打开图片2
			img1, _, _:=image.Decode(file1);

			fmt.Println(path);
			draw.Draw(newImg, newImg.Bounds(), img1, image.Pt(-cloum*256,-256*(rcout-1-row)), draw.Over) //画上第一张缩放后的图片
			file1.Close();
		}
	}


	//draw.Draw(newImg, newImg.Bounds(), img1, image.Pt(0,0), draw.Over) //画上第一张缩放后的图片
	//draw.Draw(newImg, newImg.Bounds(), img2, image.Pt(-256,0), draw.Over) //画上第二张缩放后的图片（这里需要注意Y值的起始位置）

	// 保存文件
	imgfile, _ := os.Create("D:/333/004_temp.jpg")
	defer imgfile.Close()
	jpeg.Encode(imgfile, newImg, &jpeg.Options{100})
}



